Method for selecting and transmitting selected screen control data for screen displays of a terminal from a server to a client computer

ABSTRACT

A method for selecting and transmitting selected screen control data for screen displays of a terminal from a server to a client computer comprises the steps of  
     A. providing for a plurality of screen cells making up the screen display;  
     B. storing the contents of the screen cells representing a first given screen display into a first screen content array memory of the server;  
     C. storing the contents of the screen cells representing a second given screen display into a second screen content array memory of the server;  
     D. comparing the contents of each screen cell of first screen content array memory to the contents of each according screen cell of second screen content array memory starting from the first screen cell until screen cells with different contents are detected which screen cells define an array start position;  
     E. comparing the contents of each screen cell of first screen content array memory to the contents of each according screen cell of second screen content array memory starting from the last screen cell until screen cells with different contents are detected which screen cells define an array end position;  
     F. dividing first and second screen array memories into fields of a given number of screen cells between array start position and array end position;  
     G. comparing the contents of selected fields of the first array memory to according fields of the second array memory cell by cell starting from a low field after array start position;  
     H. detecting a first end field in which all cells in both the compared fields are equal;  
     I. comparing the contents of each screen cell of first screen content array memory to the contents of each according screen cell of second screen content array memory starting from one cell below said end field and going back in the direction of the array start position until screen cells with non-matching contents are detected, which cells define a transmission end position;  
     J. transmitting screen cells of second screen content array memory between array start position and transmission end position to client computer;  
     K. comparing the contents of each screen cell of first screen content array memory to the contents of each according screen cell of second screen content array memory starting from above the end field until screen cells with different contents are detected which screen cells define a new array start position; and  
     L. repeating steps F. through K. until new array start position reaches array end position.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The invention relates to a method for selecting and transmittingselected screen control data for screen displays of a terminal from aserver to a client computer.

[0003] Such a method is relevant for so-called client-serverapplications in computer networks. The server application is generatingscreen control data for screen displays to be visualized on the clientterminal. In this connection “terminal” means a terminal per se or aso-called terminal emulation. The screen control data are transmitted bya defmed data exchange protocol, like 3270, 5250, VT220, ICA or RDP tothe client, where the client computer displays the screen content.

[0004] In general the volume of data to be transmitted between theserver and the client is an important matter because the bandwidth ofthe transmission channels is limited and the costs for the datatransmission is depending on the volume of data.

[0005] 2. Background Art

[0006] In a known concept of screen display control in client-serverapplications the screen display is made up of a plurality of screencells. The screen of a terminal has a certain number of screen cells,which are commonly arranged in columns and rows. Now the screen cellsare stored in a one-dimensional array memory which serves e.g. forrefreshing the screen content.

[0007] Depending on the type of application the type of screen cell maybe a character, according to e.g. a so-called EBCDIC-code, ASCII-code orothers, which may be combined with an attribute, like bold, underline,blinking, color, etc. Both these types of characters are appropriate forcharacter-based terminals and terminal emulations like for the 3270,5250 or VT 2 20 protocol. For graphic terminals or terminal emulations,in which the client uses rather an ICA or RDP protocol, a screen cell isa pixel, which may be encoded by e.g. 8 bits, 16 bits (high color) or 24bits (true color).

[0008] Now it is known from Prior Art to provide for a so-calledselective transmission which in general reduces the volume of data to betransferred. The basic principle of this selective transmission is thefact that when changing the screen display the server only transmitsthese screen cells, which have actually changed. The transmission isnormally started with header data, which include the position on screento start and the length of the data. In other cases like when workingwith a 3270 protocol a part of the screen is sent after positioning thecourser on a certain screen position. From this screen start positionconsecutive screen cells are sent.

[0009] Now this selective transmission shows the problem that on the onehand the server compares the screen cells of a first screen contentarray memory with all the screen cells of a second screen array memoryto verify which screen cells have changed and thus have to betransmitted from the server to the client computer. This requires acertain computing capacity and computing time at the server. On theother hand the common practice to send the relevantly changed screencells with header data or the courser positioning data leads toinefficient data transmission in case only a single or few screen cellsdid change and are sent to the client.

SUMMARY OF THE INVENTION

[0010] Proceeding from these problems, it is an object of the inventionto provide a method for selecting and transmitting selected screencontrol data for screen displays of a terminal from a server to a clientcomputer which method is more efficient compared to the Prior Artselective transmission. Especially the detecting and selecting of thechanged screen cells should be rationalized.

[0011] This object is achieved by a method for selecting andtransmitting selected screen control data comprising the steps of A.providing for a plurality of screen cells making up the screen display;B. storing the contents of the screen cells representing a first givenscreen display into a first screen content array memory of the server;C. storing the contents of the screen cells representing a second givenscreen display into a second screen content array memory of the server;D. comparing the contents of each screen cell of first screen contentarray memory to the contents of each according screen cell of secondscreen content array memory starting from the first screen cell untilscreen cells with different contents are detected which screen cellsdefine an array start position; E. comparing the contents of each screencell of first screen content array memory to the contents of eachaccording screen cell of second screen content array memory startingfrom the last screen cell until screen cells with different contents aredetected which screen cells define an array end position; F. dividingfirst and second screen array memories into fields of a given number ofscreen cells between array start position and array end position; G.comparing the contents of selected fields of the first array memory toaccording fields of the second array memory cell by cell starting from alow field after array start position; H. detecting a first end field inwhich all cells in both the compared fields are equal; I. comparing thecontents of each screen cell of first screen content array memory to thecontents of each according screen cell of second screen content arraymemory starting from one cell below said end field and going back in thedirection of the array start position until screen cells withnon-matching contents are detected, which cells define a transmissionend position; J. transmitting screen cells of one of first and secondscreen content array memory between array start position andtransmission end position to client computer; K. comparing the contentsof each screen cell of first screen content array memory to the contentsof each according screen cell of second screen content array memorystarting from above the end field until screen cells with differentcontents are detected which screen cells define a new array startposition; and L. repeating steps F. through K. until new array stallposition reaches array end position.

[0012] The essential features and benefits of the inventions andpreferred embodiments will become apparent from the enclosed descriptionof a preferred embodiment taken in conjunction with the drawing.

BRIEF DESCRIPTION OF THE DRAWINGS

[0013]FIGS. 1 through 17 show diagrammatic representations of a firstand second screen content array memory each comprising a plurality ofscreen cells.

DESCRIPTION OF THE PREFERRED EMBODIMENT

[0014] Before turning to the actual method according to the inventionsome basic background information about the transmission of screencontrol data between server and client computers are to be given.Accordingly a server application sends data to some kind of softwarewithin the server control, which software is provided with a gatewayfunctionality. This software is referred to as “screen-proxy” in thetechnical terminology. Now the screen-proxy has a connection to theclient and is responsible for packing the screen control datarepresenting a certain screen content into a well-defined protocol andsending the data to the client terminal for displaying. A protocol likeTCP/IP or SNA is used for the transmission of the data.

[0015] At any given time the screen-proxy is provided with a so-calledscreen content array memory in which all the screen cells making up acertain screen display are stored. Such a screen content array memory100 is diagrammatically shown on the left-hand side of each drawingFIGS. 1 through 17.

[0016] According to Prior Art the screen content array memory 100 isfirst updated when the server application generates new screen contente.g. by API or by transmission. Then the screen cells, in total referredto as 110, are sent to the client for displaying. The single screencells are to be denoted like the fields on a chess board, i.e. A1, B1 .. . G8, I8, in the model like screen content array memory 100.

[0017] The screen cells 110 transmitted to the client computer includethe necessary screen control data to make up the screen display encodedin the screen cells and to show the according screen display on theterminal. Any time the screen-proxy sends the screen cells 110 to theclient computer the according screen display can be shown on the clientterminal. This may take place after e.g. an interruption and restart ofthe transmission line between the screen-proxy and the client or afteran amended screen display has been transmitted to the client.

[0018] As already mentioned above it is possible to save data volume andtransmission time by only sending these screen cells the data contentsof which has changed when a new screen display was generated by theserver application. For this sake the screen-proxy initiates a secondscreen content array memory 200 in the same size as first screen arraymemory and copies the content of first screen content array memory 100to the second screen content array memory 200, by copying the contentsof each screen cell 110 to each screen cell 210 of second memory 200.Afterwards the screen-proxy updates screen content array memory 100using the new actual data from the server application.

[0019] The procedural situation after this copying and actualizing isvisualized in FIG. 1: in the first screen content array memory 100screen control data represented by the literals A, B, C and D, togethermaking up a certain new screen display, are contained in the screencells 110 and thus stored in the memory 100. In the second screencontent array memory 200 screen control data A, B, C, D making up theformer screen display are stored in the screen cells 210. As can be seenby comparing memories 100 and 200 in most positions, e.g. A1, B1, A3through D3 etc. identical screen control data are stored whereas in somepositions non-matching data are included, e.g. in screen cells C1, 14,C8 etc.

[0020] Whereas in Prior Art the screen-proxy compared the whole contentsof “new” screen content array memory 100 to the “old” screen contentarray memory 200 now the invention teaches an alternative procedurewhich is explained in the following.

[0021] Starting with the situation represented in FIG. 1 the contents ofeach screen cell 110 of first screen content array memory 100 iscompared to the according screen cells 210 of the second screen contentarray memory 200 starting from the first screen cell A1. This comparisonis made stepwise until screen cells with different contents aredetected. In FIG. 2 this scanning operation is represented by arrow 300starting from screen cells A1 and terminating at screen cells E1 whichdefine the array start position E1.

[0022] Afterwards the contents of each screen cell 110 of the firstscreen content array memory 100 is compared to the contents of eachaccording screen cell 210 of the second screen content array memory 200starting from the last screen cells 18 and going downward. This isrepresented by scanning arrow 310 starting from the screen cells 18 andterminating at screen cells C8, which have different contents. By thisdetection the screen cells 110, 210 on position C8 define an array endposition C8 (FIG. 3).

[0023] Afterwards the first and second screen array memories 100, 200are divided into fields 120. Each field 120, 220 comprises—as givennumber—four screen cells 110, 210. As can be seen from FIG. 4 bothmemories 100, 200 are divided into 14 fields 120, 220 being numbered as1 through 14 in the drawing and—if necessary—referred to in thisdescription as field 120.1, 120.2 . . . 120.14, 220.1 . . . 220.14. Thelast fields 120.14 and 220.14 comprise the remaining three screen cells110, 210 instead of the four screen cells 110, 210 of the remainingfields 120, 220.

[0024] In the next step the screen-proxy compares the contents ofselected fields 120 of the first array memory 100 to according fields220 of the second memory 200 cell by cell. This method step starts fromthe lowest field 120.2, 220.2 following the fields 120.1, 220.1including the array start position E1. Furtheron-13 and as will be clearlater-on—the screen-proxy only selects every second fields for thiscomparing step, i.e. starting from fields 120.2, 220.2 the fields 120.4,220.4, 120.6, 220.6 are scanned.

[0025] As can be seen from FIG. 4 within this comparing steps a firstend field 120.4, 220.4 is detected, in which all according screen cells110, 210 in the positions A3, B3, C3 and D3 are equal. The end fields120.4, 220.4 are bold-framed in FIG. 6.

[0026] In the next step the screen-proxy starts from one screen cell110, 210 below the end fields 120.4, 220.4, i.e. from position 12, andcompares the contents of each screen cell 110 of first screen contentarray memory 100 to the contents of the according screen cell 210 of thesecond screen content array memory going back in the direction of thearray start position. This is represented by the scanning arrow 320 inFIG.7. With this method step screen cells 110, 210 in position D2 aredetected, which have non-matching contents. These cells define atransmission end position D2.

[0027] In the next step the screen cells 110 of the screen content arraymemory 100 between the array start position E1 and the transmission endposition D2 are transmitted to the client computer. The according screencells 110 are provided with a bold frame in FIG. 8.

[0028] To search a new array start position for the next partialtransmission of the screen content array memory 100 each screen cell 110of the first screen content array memory 100 is compared to eachaccording screen cell 210 of the second screen content array memory 200starting from the first position above the end field 120.4, 220.4, i.e.from position E3. The memories 100, 200 are thus scanned until screencells 110, 210 are detected in position B4 with different contents. Thisscanning action is represented by scanning arrow 330 in FIG. 9. The newstart array position is B4.

[0029] Starting from this new array start position B4 again both screencontent array memories 100, 200 are divided into fields 120.1—120.9 and220.1—220.9 up to the array end position C8. The last field 120.9, 220.9has two screen cells as elements, whereas the remaining fields againinclude four screen cells (see FIG. 10).

[0030] Afterwards in repeating the steps explained in accordance withFIG. 5 through 7 each second field 120.2, 220.2, 120.4, 220.4 and 120.6,220.6 are compared with each other cell by cell until in field 120.6,220.6 all screen cells 110, 210 are detected to be equal (see boldframes in FIG. 11 through 13).

[0031] In the next step depicted in FIG. 14 and in accordance with themethod step explained and shown in FIG. 7 the screen cells 110, 210 fromone cell below that end field 120.6, 220.6 are checked in the directionof the array start position whether or not according screen cells 110,210 have identical or non-matching contents. By this scan, which isvisualized by the scan arrow 340 in FIG. 14 a new transmission endposition is selected represented by screen cell 110, 210 in position G5.

[0032] In the next step the screen cells 110, 210 between new arraystart position B4 and new transmission end position G5 are transmittedfrom the server to the client computer (see bold frame in FIG. 15).

[0033] Finally starting from above the end field 120.6, 220.6, i.e. inposition B7 the remaining screen cells are compared to each other tofind a possible new array start position. This is represented byscanning arrow 350 in FIG. 16. As, however, all screen cells in thisinterval between position B7 and B8 have an identical contents thecomparing step terminates in reaching the array end position C8,indicating that the screen cell in position C8 is the last one which isdifferent between both screen content array memories 100, 200, i.e. thecontents of this screen cell of screen content array memory 100 is to betransmitted to the client computer (see FIG. 17).

[0034] Finally attention is drawn to the fact that some protocols likethe HOB-Y-protocol of the applicant contain commands to be sent from theserver to the client to move or copy one part of the screen to anotherpart of the screen. The most common example for such a function is thescrolling of the screen in upward or downward direction.

[0035] Such scrolling is normally done in full rows of screen cells.Accordingly a preferred embodiment of the invention provides for anefficient data handling in connection with scrolling. Actually thescreen-proxy does not only compare screen content array memory 100 withcorresponding screen cells 210 of screen content array memory 200, butalso searches for “scrolled” screen cells. This means that the screendisplay is divided up into rows 140, 240 of screen cells, which arerepresented in those screen content array memories 100, 200 of FIG. 1.Now the contents of screen cells 110 of the first screen content arraymemory 100 is compared to the contents of screen cells 210 of the secondscreen content array memory 200 in screen cell positions, which aredisplaced versa the according screen cell position of the first screencontent array memory 100 by at least one row 140, 240 of screen cells110, 210. By this “displaced comparison” one can easily detect displacedrows 140, 240 of screen cells identifying scrolled screen displays. Ifthe screen-proxy finds that such scrolling has been done, it may sendcommands to the client to move or copy the screen content to certainpositions instead of sending screen cells.

What is claimed is
 1. A method for selecting and transmitting selectedscreen control data for screen displays of a terminal from a server to aclient computer comprising the steps of A. A. providing for a pluralityof screen cells (110, 210) making up the screen display, B. B. storingthe contents of the screen cells (110) representing a first given screendisplay into a first screen content array memory (100) of the server, C.C. storing the contents of the screen cells (210) representing a secondgiven screen display into a second screen content array memory (200) ofthe server, D. D. comparing the contents of each screen cell (110) offirst screen content array memory (100) to the contents of eachaccording screen cell (210) of second screen content array memory (200)starting from the first screen cell (110) until screen cells (110, 210)with different contents are detected which screen cells (110, 210)define an array start position (E1), E. E. comparing the contents ofeach screen cell (110) of first screen content array memory (100) to thecontents of each according screen cell (210) of second screen contentarray memory (200) starting from the last screen cell (110, 210) untilscreen cells (110, 210) with different contents are detected whichscreen cells (110, 210) define an array end position (C8), F. F.dividing first and second screen array memories (100, 200) into fields(120, 220) of a given number of screen cells (110, 210) between arraystart position (E1) and array end position (C8), G. G. comparing thecontents of selected fields (120.2, 220.2, 120.4, 220.4 . . . ) of thefirst screen content array memory (100) to according fields of thesecond screen content array memory (200) cell by cell starting from alow field (120.2, 220.2) after array start position (E1), H. H.detecting a first end field (120.4, 220.4) in which all screen cells(110, 210) in both the compared fields (120, 220) are equal, I. I.comparing the contents of each screen cell (110) of first screen contentarray memory (100) to the contents of each according screen cell (210)of second screen content array memory (200) starting from one cell belowsaid end field (120.4, 220.4) and going back in the direction of thearray start position (E1) until screen cells (110, 210) withnon-matching contents are detected, which cells define a transmissionend position (D2), J. J. transmitting screen cells (110) of first screencontent array memory (100) between array start position (E1) andtransmission end position (D2) to client computer, K. K. comparing thecontents of each screen cell (110) of first screen content array memory(100) to the contents of each according screen cell (210) of secondscreen content array memory (200) starting from above the end field(120.4, 220.4) until screen cells (110, 210) with different contents aredetected which screen cells (110, 210) define a new array start position(B4), and L. L. repeating steps F. through K. until new array startposition reaches array end position (C8).
 2. A method according to claim1 wherein in case of a character based terminal a screen cell (110, 210)is represented by a character.
 3. A method according to claim 1 whereinin case of a character based terminal a screen cell (110, 210) isrepresented by a character and a character attribute.
 4. A methodaccording to claim 1 wherein in case of a graphic terminal a screen cell(110, 210) is represented by a pixel of the terminal.
 5. A methodaccording to claim I wherein each field (120, 220) of the first andsecond screen array memory (100, 200) comprises one of 2, 4, 8 or 16screen cells (110, 210).
 6. A method according to claim 1 wherein everysecond field (120, 220) of the first screen content array memory (100)is compared to the according field of the second screen content arraymemory (200).
 7. A method according to claim 1 wherein the screendisplay is divided up into (140, 240) of screen cells and wherein thecontents of screen cells (110) of the first screen content array memory(100) is compared to the contents of screen cells (210) of the secondscreen content array memory (200) in screen cell positions which aredisplaced versa the according screen cell position of the first screencontent array memory by at least one row (140, 240) of screen cells(110, 210).